package cauca.scsn.modelo.entidad;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * EsquemaEje entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "esquema_eje", schema = "public")
public class EsquemaEje extends EntidadGenerica {

	// Fields

	private Integer idEsquemaEje;
	private Empresa empresa;
	private String nombreEsquema;
	private String descripcion;
	private Set<Vehiculo> vehiculos = new HashSet<Vehiculo>(0);
	private Set<Eje> ejes = new HashSet<Eje>(0);

	// Constructors

	/** default constructor */
	public EsquemaEje() {
	}

	/** minimal constructor */
	public EsquemaEje(Integer idEsquemaEje, Empresa empresa,
			String nombreEsquema, String status) {
		this.idEsquemaEje = idEsquemaEje;
		this.empresa = empresa;
		this.nombreEsquema = nombreEsquema;
		this.status = status;
	}

	/** full constructor */
	public EsquemaEje(Integer idEsquemaEje, Empresa empresa,
			String nombreEsquema, String descripcion, String status,
			Set<Vehiculo> vehiculos, Set<Eje> ejes) {
		this.idEsquemaEje = idEsquemaEje;
		this.empresa = empresa;
		this.nombreEsquema = nombreEsquema;
		this.descripcion = descripcion;
		this.status = status;
		this.vehiculos = vehiculos;
		this.ejes = ejes;
	}

	// Property accessors
	@Id
	@Column(name = "id_esquema_eje", unique = true, nullable = false)
	public Integer getIdEsquemaEje() {
		return this.idEsquemaEje;
	}

	public void setIdEsquemaEje(Integer idEsquemaEje) {
		this.idEsquemaEje = idEsquemaEje;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "id_empresa", nullable = false)
	public Empresa getEmpresa() {
		return this.empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	@Column(name = "nombre_esquema", nullable = false, length = 60)
	public String getNombreEsquema() {
		return this.nombreEsquema;
	}

	public void setNombreEsquema(String nombreEsquema) {
		this.nombreEsquema = nombreEsquema;
	}

	@Column(name = "descripcion")
	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	@Column(name = "status", nullable = false, length = 1)
	public String getStatus() {
		return this.status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "esquemaEje")
	public Set<Vehiculo> getVehiculos() {
		return this.vehiculos;
	}

	public void setVehiculos(Set<Vehiculo> vehiculos) {
		this.vehiculos = vehiculos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "esquemaEje")
	public Set<Eje> getEjes() {
		return this.ejes;
	}

	public void setEjes(Set<Eje> ejes) {
		this.ejes = ejes;
	}

	@Override
	public Object getPrimaryKey() {
		return this.idEsquemaEje;
	}

	@Override
	public String toString() {
		return null;
	}

}